extends Node
'''
	基本战斗状态
'''

@export var maxHp = 5	 ## 最大生命值
@export var power = 1	 ## 伤害
@export var maxArmor = 5 ## 最大护甲
@onready var hp = maxHp

var armor = 3
var isImmune = false		## 是否具有免疫效果
var isDeath = false			## 死亡状态

signal death		## 死亡事件
signal hurt			## 受伤事件
signal cure			## 治愈事件
signal addArmor		## 叠甲事件

func getHp():
	return self.hp
	
	
func subX(x):
	# 如果具有免疫效果, 不会触发之后的事件
	if isImmune:
		return
	
	if x < 0: return 
	
	# 护甲抵消
	if self.armor > 0:
		if self.armor >= x:
			self.armor -= x
			hurt.emit(x)
			x = 0
			return
			
		else:
			x -= self.armor
			self.armor = 0
			hurt.emit(x)
		
	self.hp -= x
	# 用死亡状态控制死亡事件只触发一次
	if not isDeath:
		if self.hp <= 0:
			isDeath = true
			death.emit()
		
	hurt.emit(x)
		
		
func addX(x):
	if x < 0: return 
	elif hp + x >= maxHp: x = maxHp - hp
	hp += x
	cure.emit(x)
	
	
func addArmorX(x):
	if self.armor + x >= self.maxArmor:
		x = self.maxArmor - self.armor
		
	self.armor += x
	addArmor.emit(x)
	

func getArmor():
	return self.armor
